﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SpringNetCheckerCore
{
    /// <summary>
    /// 寫Log訊息的委派宣告
    /// </summary>
    public delegate void LogWriteLineDelegate(string value);

    /// <summary>
    /// Spring.NET Objects Checker
    /// </summary>
    public interface ISpringNetObjectsChecker
    {
        /// <summary>
        /// 新增寫Log訊息的委派
        /// </summary>
        void AddLogWriteLineDelegate(LogWriteLineDelegate logWriteLine);

        /// <summary>
        /// 新增 Spring Objects XML Schema 資訊 (xmlns的值和定義檔位置)
        /// </summary>
        void AddXmlSchemaInfo(string xmlnsValue, string schemaFilePath);

        /// <summary>
        /// 移除 Spring Objects XML Schema 資訊
        /// </summary>
        void RemoveXmlSchemaInfo(string xmlnsValue);

        /// <summary>
        /// 新增 Spring Objects Xml 設定檔位置
        /// </summary>
        void AddObjectsXmlFilePath(string objectsXmlFilePath);

        /// <summary>
        /// 檢查 Spring Objects Xml 設定檔
        /// </summary>
        /// <param name="objectsXmlFilePath">Spring Objects Xml 設定檔位置</param>
        /// <param name="assembliesDirectoryPath">使用到的組件檔資料夾位置</param>
        /// <returns></returns>
        bool CheckObjectsXmlFile(string objectsXmlFilePath, string assembliesDirectoryPath);

        /// <summary>
        /// 檢查 Spring Objects Xml 設定檔
        /// </summary>
        /// <param name="assembliesDirectoryPath">使用到的組件檔資料夾位置</param>
        bool CheckObjectsXmlFile(string assembliesDirectoryPath);
    }
}
